import { ApiProperty } from '@nestjs/swagger'
import { UserChatRecord } from 'src/chat-record/entities/user-chat-record.entity'
import { PrimaryGeneratedColumn, Column, CreateDateColumn, ManyToOne, Entity, JoinColumn } from 'typeorm'
import { ChatUser } from '../../chat_user/entities/chat_user.entity'

/*
 * @Author: fhw
 * @Date: 2022-08-02 14:39:45
 * @LastEditors: Please set LastEditors
 * @LastEditTime: 2023-01-28 00:05:16
 * @Description:
 */
@Entity('chat_user_friends')
export class ChatUserFriend {
  @ApiProperty({ example: 'id', description: 'id' })
  @PrimaryGeneratedColumn({
    type: 'int',
    comment: 'id',
  })
  id: number
  /** 好友id */
  @ApiProperty({ example: 'friendsId', description: '好友id' })
  @Column({
    type: 'int',
    comment: '好友id',
  })
  friendsId: number
  @ManyToOne(() => ChatUser, (user) => user.id, { eager: true })
  friends: ChatUser
  /** 添加时间 */
  @ApiProperty({ example: 'createDate', description: '添加时间' })
  @CreateDateColumn({
    type: 'datetime',
    comment: '添加时间',
  })
  createDate: string
  /**
     * 好友状态 0:待通过，1：通过，2：等待验证，3：拒绝好友，删除数据
     */
  @ApiProperty({ example: 'status', description: '好友状态 0:待通过，1：通过，2：等待验证，3：拒绝好友，删除数据' })
  @Column({
    comment: '好友状态 0:待通过，1：通过，2：等待验证，3：拒绝好友，删除数据',
    type: 'enum',
    enum: [0, 1, 2, 3],
  })
  status: number
  /** 来源：10 通过账号搜索，20 通过名片分享 */
  @ApiProperty({ example: 'source', description: '来源：10 通过账号搜索，20 通过名片分享' })
  @Column({
    comment: '来源：10 通过账号搜索，20 通过名片分享',
    type: 'enum',
    enum: [10, 20],
    nullable: true
  })
  source: number
  /** 删除朋友验证消息，0：删除，1：未删除 */
  @ApiProperty({ example: 'del', description: '删除朋友验证消息，0：删除，1：未删除' })
  @Column({
    comment: '删除朋友验证消息，0：删除，1：未删除',
    type: 'enum',
    enum: [0, 1],
    nullable: true,
    default: 1
  })
  del: string
  /** 验证消息 */
  @ApiProperty({ example: 'verification', description: '验证消息' })
  @Column({
    type: 'varchar',
    comment: '验证消息',
    nullable: true,
  })
  verification: string
  /** 是否已读,0：未读，1：已读 */
  @ApiProperty({ example: 'isRead', description: '是否已读,0：未读，1：已读' })
  @Column({
    type: 'tinyint',
    comment: '是否已读,0：未读，1：已读',
    default: 0,
  })
  isRead: number
  /** 备注 */
  @ApiProperty({ example: 'remarks', description: '备注' })
  @Column({
    type: 'varchar',
    comment: '备注',
    nullable: true
  })
  remarks: string
 
  /** 用户id */
  @ApiProperty({ example: 'userId', description: '用户id' })
  @Column({
    type: 'int',
    comment: '用户id',
  })
  userId: number

  @ManyToOne(() => ChatUser, (user) => user.id)
  user: ChatUser
  /** 最新消息Id */
  @ApiProperty({ example: 'latestNewsId', description: '最新消息Id' })
  @Column({
    type: 'tinyint',
    comment: '最新消息Id',
    nullable: true
  })
  latestNewsId: number
  @ManyToOne(() => UserChatRecord, (latestNews) => latestNews.id, { nullable: true, eager: true })
  @JoinColumn({ name: 'latestNewsId' })
  latestNews: UserChatRecord
}
